<?php
/*
 
*/

  /* =============================
     Liste des variables attendues
   -------------------------------
     POST ACTION_TAG    = ADD|UP_CAT|UP_NOM|DEL
     POST ID_ROOT_TAG[] = int[]
     POST NOM_TAG[]     = string[]
     POST NEW_NOM_TAG[] = string[]
   =============================== */

  /*
   Actions possibles
   - renommer des tags => NOM_TAG[],NEW_NOM_TAG[]
   - ajouter des tags => NOM_TAG[],ID_ROOT_TAG[]
   - supprimer des tags => NOM_TAG[]
   - changer des tags de catégories => NOM_TAG[],ID_ROOT_TAG[]
   */

$action = (!empty($_POST['ACTION_TAG']))  ? cleanVar($_POST['ACTION_TAG'])       : null;
$idRoot = (!empty($_POST['ID_ROOT_TAG'])) ? cleanVar($_POST['ID_ROOT_TAG'],true) : null;
$nom    = (!empty($_POST['NOM_TAG']))     ? cleanVar($_POST['NOM_TAG'])          : null;
$newNom = (!empty($_POST['NEW_NOM_TAG'])) ? cleanVar($_POST['NEW_NOM_TAG'])      : null;

$admin     = (bool)$_SESSION['IS_ADMIN'];
$nbrAction = 0;
$tabErr    = array();
$ok        = true;

//--- mettre les bon numeros d erreur dans tabErr
//--- bug si on fait des actions sur un tag qui n existe pas alors il n y a pas d erreur

try
{
  // DROITS: si il est identifié
  if(!isset($_SESSION['IDENTIFICATION_OK']))
    {
      throw new ListerException(204);
    }
  
  $nbTag = count($nom);

  // On teste si les données en entrées permettent l'action demandée
  if(
     is_null($nom) 
     || is_null($action) 
     || ($action == 'ADD'    && (is_null($idRoot) || count($idRoot) < $nbTag)) 
     || ($action == 'UP_NOM' && (is_null($newNom) || count($newNom) < $nbTag))
     || ($action == 'UP_CAT' && (is_null($idRoot) || count($idRoot) < $nbTag))
     ) 
    {
      throw new ListerException(15);
    }

  $i = 0;
  for($i = 0 ; $i < $nbTag ; $i++)
    {
      
      if(!is_null($nom))   { list(, $nomi)    = each($nom);   }
      if(!is_null($idRoot)){ list(, $idRooti) = each($idRoot);}
      if(!is_null($newNom)){ list(, $newNomi) = each($newNom);}
      $tabErr['ERR'] = '';
      try{
      if($action != 'UP_CAT')//--- pas l inverse plutot ?
	{
	    if(!isset($idRooti)) $idRooti = 1;//--- ajouté a l arrache correction de bug a creuser
	  $tag = new Tag($nomi, $idRooti);
	}
      else
	{
	  $tag = new Tag($nomi);
	}
	}
	catch(ListerException $e)
	{
	    $tabErr['ERR'] = $e->getNum();
	}
      
      // ajouter tag
      if($action == 'ADD')
	{
	  // DROITS: nouveau tag: si il est identifie
	  try
	    {
	      $tag->enregistrer();    	
	      $nbrAction++;
	    }
	catch(ListerException $e)
	{
	    $tabErr['ERR'] = $e->getNum();
	}
	  
	}
      
      // modifier le nom du tag
      if($action == 'UP_NOM' && $nomi != $newNomi)
	{
	  // DROITS: renommer tag: si il est admin
	  if(!$admin)
	    {
	      //throw new ListerException(205);
	      $tabErr['ERR'] = 205;
	    }

	  try
	    {	  
	      $tag->renommer($newNomi);
	      $nbrAction++;
	    }
	catch(ListerException $e)
	{
	    $tabErr['ERR'] = $e->getNum();
	}

	}
      
      // modifier la catégorie du tag
      if($action == 'UP_CAT' && $idRooti != $tag->getIdRoot())
	{
	  // DROITS: changer le tag de categorie: si il est admin
	  if(!$admin)
	    {
	      //throw new ListerException(206);
	      $tabErr['ERR'] = 206;
	    }
	  
	  try
	    {
	      $tag->changerCategorie($idRooti);
	      $nbrAction++;
	    }
	catch(ListerException $e)
	{
	    $tabErr['ERR'] = $e->getNum();
	}

	}
      
      // supprimer tag
      if($action == 'DEL')
	{
	  // DROITS: supprimer le tag: si il est admin
	  if(!$admin)
	    {
	      //throw new ListerException(207);
	      $tabErr['ERR'] = 207;
	    }

	  try
	    {	  
	      $tag->supprimer();
	      $nbrAction++;
	    }
	catch(ListerException $e)
	{
	    $tabErr['ERR'] = $e->getNum();
	}

	}
      
      // block var
      $template->assign_block_vars('tag', array_merge($tag->returnArray(),$tabErr));
      
    }

  if($nbrAction == 0)
    {
      throw new ListerException(15);
    }
        if(empty($tabErr['ERR'])){
        $tabErr['OK'] = 'ok';
        $tabErr['MESSAGE_ERR'] = '';
      }
      else{
        $ok = false;
        $tabErr['OK'] = 'err';
        global $err;
        $tabErr['MESSAGE_ERR'] = $err[$tabErr['ERR']];
      }

  $template->assign_vars(array('OK' => (($ok)?'ok':'err')));
  $template->assign_vars(array('NOMBRE_ACTION' => $nbrAction));
  
}
catch(ListerException $e)
{
  $template->assign_vars($e->returnArray());
  $template->assign_vars(array('OK'  => 'err'));
}

?>
